<template>
  <div class="loading">
    <div class="loading-content">
      <div class="loading-wrapper"></div>
      <p class="desc">{{title}}</p>
    </div>
  </div>
</template>

<script>
export default {
  name: 'MLoading',
  data() {
    return {
      title: '正在载入...'
    }
  },
  methods: {
    setTitle(title) {
      this.title = title
    }
  }
}
</script>

<style lang="less" scoped>
  .loading {
    position: absolute;
    top: 50%;
    left: 50%;
    transform: translate3d(-50%, -50%, 0);
    .loading-content {
      text-align: center;
      .desc {
        margin-top: 30px;
        line-height: 20px;
        font-size: @fontsize-small;
        color: @color-text-l;
      }
    }
    .loading-wrapper {
      width: 50px;
      height: 50px;
      &:before {
        content: '';
        width: 50px;
        height: 5px;
        background: #fff;
        opacity: 0.7;
        position: absolute;
        top: 59px;
        left: 0;
        border-radius: 50%;
        animation: shadow .3s linear infinite;
      }
      &:after {
        content: '';
        width: 50px;
        height: 50px;
        background: @color-theme;
        animation: loading .3s linear infinite;
        position: absolute;
        top: 0;
        left: 0;
        border-radius: 3px;
      }
    }
  }
  @keyframes loading {
    17% {
      border-bottom-right-radius: 3px;
    }
    25% {
      transform: translateY(9px) rotate(22.5deg);
    }
    50% {
      transform: translateY(18px) scale(1, .9) rotate(45deg);
      border-bottom-right-radius: 40px;
    }
    75% {
      transform: translateY(9px) rotate(67.5deg);
    }
    100% {
      transform: translateY(0) rotate(90deg);
    }
  }
  @keyframes shadow {
    0%, 100% {
      transform: scale(1, 1);
    }
    50% {
      transform: scale(1.5, 1);
    }
  }
</style>
